// 款式管理相关API接口
import { get, post, put, del } from '../utils/request'

/**
 * 获取所有款式列表
 * @param {Object} params - 查询参数
 * @param {string} params.batchId - 批次ID筛选
 * @param {string} params.brand - 品牌筛选
 * @param {string} params.season - 季次筛选
 * @param {string} params.search - 搜索关键词
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页大小
 * @returns {Promise<Object>} 款式列表
 */
export const getStyles = async (params = {}) => {
  try {
    const response = await get('/styles', params)
    return response.data
  } catch (error) {
    console.error('获取款式列表失败:', error)
    throw error
  }
}

/**
 * 根据ID获取款式详情
 * @param {string} styleId - 款式ID
 * @returns {Promise<Object>} 款式详情
 */
export const getStyleById = async styleId => {
  try {
    const response = await get(`/styles/${styleId}`)
    return response.data
  } catch (error) {
    console.error('获取款式详情失败:', error)
    throw error
  }
}

/**
 * 根据批次ID获取款式列表
 * @param {string} batchId - 批次ID
 * @returns {Promise<Array>} 款式列表
 */
export const getStylesByBatchId = async batchId => {
  try {
    const response = await get(`/batches/${batchId}/styles`)
    return response.data
  } catch (error) {
    console.error('获取批次款式列表失败:', error)
    throw error
  }
}

/**
 * 创建新款式
 * @param {Object} styleData - 款式数据
 * @returns {Promise<Object>} 创建的款式
 */
export const createStyle = async styleData => {
  try {
    const response = await post('/styles', styleData)
    return response.data
  } catch (error) {
    console.error('创建款式失败:', error)
    throw error
  }
}

/**
 * 更新款式信息
 * @param {string} styleId - 款式ID
 * @param {Object} styleData - 更新的款式数据
 * @returns {Promise<Object>} 更新后的款式
 */
export const updateStyle = async (styleId, styleData) => {
  try {
    const response = await put(`/styles/${styleId}`, styleData)
    return response.data
  } catch (error) {
    console.error('更新款式失败:', error)
    throw error
  }
}

/**
 * 删除款式
 * @param {string} styleId - 款式ID
 * @returns {Promise<boolean>} 删除结果
 */
export const deleteStyle = async styleId => {
  try {
    const response = await del(`/styles/${styleId}`)
    return response.data
  } catch (error) {
    console.error('删除款式失败:', error)
    throw error
  }
}

/**
 * 批量创建款式
 * @param {Array} stylesData - 款式数据数组
 * @returns {Promise<Array>} 创建的款式列表
 */
export const createStylesBatch = async stylesData => {
  try {
    const response = await post('/styles/batch', stylesData)
    return response.data
  } catch (error) {
    console.error('批量创建款式失败:', error)
    throw error
  }
}

/**
 * 获取款式统计信息
 * @param {string} batchId - 批次ID（可选）
 * @returns {Promise<Object>} 统计信息
 */
export const getStyleStats = async (batchId = null) => {
  try {
    const response = await get(`/styles/stats${batchId ? `?batchId=${batchId}` : ''}`)
    return response.data
  } catch (error) {
    console.error('获取款式统计失败:', error)
    throw error
  }
}

// 信息匹配
export const matchingStyleStatus = async (colorId, statusType) => {
  try {
    const response = await put(`/color/${colorId}/matching-status`, { status_type: statusType })
    // 根据响应拦截器的逻辑：
    // 如果 code === 200，response 已经是 response.data
    // 如果 code !== 200，response 是完整的 response 对象
    return response
  } catch (error) {
    console.error('更新颜色状态失败:', error)
    throw error
  }
}
